Enterprises such as corporations, institutions, agencies, and other entities have massive amounts of data for which analysis is needed to enable decision making processes, and computerized systems based on business rules have arisen to aid enterprises' decision-making capabilities in this regard. FIG. 1 illustrates a basic exemplary process flow for such a rule-based system. The flow of FIG. 1 relies on two elements—a fact 100 and a rule 112. Facts 100 are typically characterized as tuples, with each tuple comprising an identifier 106, at least one attribute 108 and at least one value 110 corresponding to the attribute. The identifier 106 is a unique string that identifies the fact 100. An attribute 108 is a string that identifies a particular feature of the fact 100, and the value 108 is a value for that particular feature. It should be understood that a fact 100 can have multiple attributes 108 and corresponding values 110. A rule 112 generally comprises one or more conditions 114 and one or more actions 116 to be taken if the conditions are satisfied. As such, rules 112 can be characterized with the form: if CONDITION(s) then ACTION(s). It should be understood that rules 112 may include multiple conditions 114 with potentially complicated inter-relationships among the conditions. At step 102, a check is performed to see if fact 100 satisfies a rule 112. In the event the fact satisfies the rule, one or more action(s) 116 are triggered. To perform such a check, step 102 tests for valid (identifier, attribute, value) tuples that satisfy a condition 114. It should be noted that for facts the three fields can only take on specific values (based on the values of the bit string which represents the fact), whereas for rules, the constituent fields can be represented by a variable.
A variety of systems have been developed to provide rule-based decision-making capabilities to enterprises. Examples of these systems include event processors, complex event processors (CEPs), and business rules engines. An event processor and a complex event processor can be distinguished from a business rules engine in that an event processor and a complex event processor are “feed forward” systems in that they do not feed result information from the business rule condition checking process back into the event processor or complex event processor to determine further actions that need to be taken. In contrast, a business rules engine employs some form of inferencing intelligence at the output of the business rule condition checking process to feed all or a select subset of the results back into the business rules engine to determine further actions that need to be taken. A complex event processor can be distinguished from an event processor in that a complex event processor can take into consideration multiple events when deciding whether a particular business rule condition has been satisfied.
An algorithm that has arisen to implement a rule-based system exemplified by FIG. 1 (typically for business rules engines) is known as the Rete algorithm. See Forgy, Charles, “RETE: A fast algorithm for the many pattern/many object pattern matching problem”, Artificial Intelligence, Vol. 19, p. 17-37, 1982, the entire disclosure of which is incorporated herein by reference. The Rete algorithm derives its efficiency by exploiting the modular nature of rules; rule-checking is performed as a series of steps which represent the rules to determine if one or more corresponding actions are to be initiated.
The inventors believe that conventional implementations of computerized rule-based systems do not perform exceptionally well, particularly in instances where the size of the rule set is large and growing, where the size of the data volume is large and growing, and/or where there is a need for low latency with respect to making a business rule-based decision after first receiving the pertinent data. For example, the inventors believe that conventional business rule processing systems which rely on analyzing data stored using database technology such as a conventional RDBMS (which are optimized for large-scale permanent storage and carefully-tuned query performance) have difficulty keeping up with the demands of very high speed data streams and thus serve as a potential bottleneck in a rule-based decision-making system. Thus, as enterprises' rule sets and data volumes continue to grow in size and complexity and as data transfer speeds continue to increase, the inventors further believe that time will exacerbate this problem unless a better solution for business rule processing is devised.